bash function example / shell script function / function in shell
script / 쉘스크립트에서 함수 사용 / bash 함수 사용 / 함수 사용법 / bash
의 if 사용법 / linux shell script programming / script examples / new
line / add new line / newline in bash / new line
bash script 예제
함수 parameter 사용
# run.sh
#!/bin/sh
get_val()
{
param=$1
echo $param
}
re=$(get_val "test")
echo $re
$> run.sh
test
함수의 return 을 주는 법
function get_dir(){
declare -n ret=$1
local dirlist=$(find $2 -mindepth 1 -maxdepth 1 -type d)
ret=$dirlist
}
get_dir result .
dirlist=$result
declare -n ret=$1
를 하면 1번째 parameter 에 대한
reference ret
를 declare(선언)하게 된다. 그래서 이 ret 에
assign 을 하면, 첫번째 parameter 로 넘어가게 된다.
string 에 \n
(new
line) 을 넣는법
아래처럼 \n
을 추가할 수 있다. 그리고 echo 에
"
(쌍따옴표) 를 주면 된다. 쌍따옴표를 안주면, new line 이
적용되지 않은 string 이 print 된다.
printf -v commands "$commands\n$cmdAdded"
echo "$commands"
echo -e 'a\nb'
a
b
bash script 로 넘기는 인자수(argument count) 를 check 하는 법
if [ "$#" -ne 1 ]; then
echo "Usage: run.sh <filename>"
fi
file/directory 존재 여부
if [ ! -d $dstPath]
then
echo "$dstPath does NOT exist"
fi
if [ ! -f $dstFile]
then
echo "$dstFile does NOT exist"
fi
example
현재 directory 에 있는 directory 명에 대해
mkdir <directory_name>
string을 만들고, 현재
directory 에 있는 file 명에 대해 ls <file_name>
string 을 만드는 script
#!/bin/bash
function get_dir(){
# https://stackoverflow.com/questions/3236871/how-to-return-a-string-value-from-a-bash-function/38997681#38997681
declare -n ret=$1
# https://stackoverflow.com/questions/2437452/how-to-get-the-list-of-files-in-a-directory-in-a-shell-script/71345102#71345102
local dirlist=$(find $2 -mindepth 1 -maxdepth 1 -type d)
ret=$dirlist
}
function get_files(){
declare -n ret=$1
# https://stackoverflow.com/questions/2437452/how-to-get-the-list-of-files-in-a-directory-in-a-shell-script/71345102#71345102
local files=$(find $2 -maxdepth 1 -type f)
ret=$files
}
# --------------------
# main
# --------------------
commads=''
get_dir result .
dirlist=$result
for dir in $dirlist
do
cmdAdded="mkdir $dir"
printf -v commands "$commands\n$cmdAdded"
done
get_files result ~/a/prog
files=$result
for file in $files
do
cmdAdded="ls $file"
printf -v commands "$commands\n$cmdAdded"
done
# https://stackoverflow.com/questions/3005963/how-can-i-have-a-newline-in-a-string-in-sh
# without quote, newline does not work
echo "$commands"
See Also
- Introduction to if: bash 의 if 문법
- 쿠…sal: [컴] 알아두면 좋을 linux commands
댓글 없음:
댓글 쓰기