在我的 bash 腳本中,我嘗試將引數分配給一個變數并稍后使用該變數,但是在我引入睡眠行之后,發現變數值是通過添加該睡眠操作的秒數來自動更改的。代碼是這樣的(檔案名chk2.sh):
#!/bin/bash
SECONDS=$1
echo "seconds: $1"
echo "seconds: $SECONDS"
sleep 5;
echo "seconds: $SECONDS"
輸出是這樣的:
./chk2.sh 4
seconds: 4
seconds: 4
seconds: 9
我預計變數 $SECONDS 不會改變,以后可以使用。但是,在使用 sleep 之后,該值實際上發生了變化。
uj5u.com熱心網友回復:
預計變數 $SECONDS 不會改變,以后可以使用。但是,在使用 sleep 之后,該值實際上發生了變化。
declare -p SECONDS
有值,請查看bash 手冊。
PAGER='less /^[[:blank:]]*seconds' man bash
約定不使用大寫變數名是有原因的。Bash 和 env 變數都是大寫的,所以這是一個經典的例子。
見:https ://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/524698.html
標籤:重击壳变量命令行参数
上一篇:用awk比較數字
