[command]腳本基本知識

腳本基本知識

#! /bin/zsh
exit 0 #退出並傳出一個值,可以echo $?顯示

說明使用的bash。

根據時間創建文件

#! /bin/zsh
echo -e "input file name"
read fileuser


filename=${fileuser:-"filename"}

date1=$(date -v+2d +%Y%m%d)
date2=$(date +%Y%m%d)

file1=${filename}_${date1}
file2=${filename}_${date2}

touch "$file1"
touch "$file2"

數值計算

只支持整數運算

$(( 計算式 ))
ex:
echo $((3 + 4))

執行方式的區別

1)直接運行命令行
相當於在父進程中運行程序,變量會保留

2)./script.sh
相當於在子進程中運行程序,變量不會保留。

3)source script.sh
在父進程中運行程序,變量會保留。

test

測試命令

 test -e script.sh && echo "exist" || echo "not exist"
-e: 文件名是否存在
-f:  文件名是否存在且爲file
-d: 文件名是否存在且爲directory
-z string: 判斷字符串是否爲空
-r: 可讀
-w:可寫
-x:可執行

-a: and
-o: or
!: negative
test -r filename -a -w filename

還有使用[]來進行判斷,注意空格!

# [空格。。。空格op空格。。。空格]
[ "$name" = "name" ]

file:說明一個文件的類型(是否可執行)

運行參數

$x (x = 1, 2, 3) 表示第幾個參數
$0 第一個參數前的命令
$# 總參數個數
$* 所有參數都輸出,默認以空格分割。
#! /bin/zsh

echo "$0"
echo "$#"
echo "$1"
echo "$*"

exit 0
./script.sh 1 2 3
./script.sh
3
1
1 2 3

條件判斷

在[]中判斷,

-eq: 相等
-ne: 不想的
-gt:大於
-lt:小於
-ge:大於等於
-le:小於等於
if [ $1 -eq 1 ]; then
    echo -e "1"
elif [ "$1" -gt "2" ]; then
    echo -e "2"
fi

case

case $1 in
        "one")
        echo "one"
        ;;
        "two")
                echo "two"
        ;;
esac

function

在函數中$1表示第一個參數,$2表示第二個參數,注意這裏的$1和運行腳本的$1是不一樣的。
function print() {
        echo -n "print $(($1 + 1))"
}

case $1 in
        "1")
                print 1
        ;;
        "2")
                print 2
        ;;
esac

循環的各種做法

#! /bin/zsh

age=10

while [ $age -lt 20 ]
do
    age=$(( age + 1 ))
done

echo "$age"

until [ $age -eq 25 ]
do
    age=$(( $age + 1))
done

echo "$age"

for animal in dog cat mouse
do
    echo "$animal"
done

for times in $(seq 1 100)
do
    echo "$times"
done

filelist=$(ls './')
for filename in $filelist
do
    echo "$filename"
done

for ((i=0;i <= 10; i = i + 1))
do
    echo "$i"
done

調試

-n:不執行,檢查語法錯誤
-v: 在執行前,把內容輸出
-x:將使用到的內容輸出。
sh -n script.sh
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章