iF任何人都可以解釋我下面的代碼意味着什麼(「-z $ {1 + x}」),那麼我會很高興。 我有一部分代碼,我試圖理解它。我知道它用字符串檢查某些東西,但不知道究竟是什麼。bash命令的解釋
if [ -z ${1+x} ]; then
error "Please provide some information" 1;
fi
Thansk預先
iF任何人都可以解釋我下面的代碼意味着什麼(「-z $ {1 + x}」),那麼我會很高興。 我有一部分代碼,我試圖理解它。我知道它用字符串檢查某些東西,但不知道究竟是什麼。bash命令的解釋
if [ -z ${1+x} ]; then
error "Please provide some information" 1;
fi
Thansk預先
的[ ]
構建體進行測試。如果測試爲「真」,則返回0;如果測試爲「假」,則返回非零值。
-z
測試需要一個參數,如果參數是一個空(零長度)字符串,則返回「true」。
如果設置了位置參數1,則「$ {1 + x}」擴展擴展爲給定值(在這種情況下爲x
,但您可以放置任何您想要的)。如果它已被賦值(即使該值爲空字符串),它將被設置,否則取消設置。如果位置參數未設置,則擴展會生成一個空字符串。
請注意,它也適用於變量名稱。例如,您可以使用「$ {MYVAR + x}」。
如果沒有值作爲參數1傳遞給腳本或函數,則整個if
塊將顯示錯誤消息。但是,如果通過了空值(即myscript ""
),則不會有錯誤消息。
謝謝,這解釋了一切:) – otemek
可能是更好地與爲例進行了說明,
案例-1:foo
未設置
unset foo
if [[ ${foo+isset} = isset ]]; then
echo "foo is set..."
else
echo "foo is not set..."
fi
運行它產生,
bash -x script.sh
+ unset foo
+ [[ '' = isset ]]
+ echo 'foo is not set...'
foo is not set...
案例-2:foo
設置和空
$ bash -x script.sh
+ foo=
+ [[ isset = isset ]]
+ echo 'foo is set...'
foo is set...
案例3:foo
設置並具有有效的值,
$ bash -x script.sh
+ foo=something
+ [[ isset = isset ]]
+ echo 'foo is set...'
foo is set...
那麼基本上${paramter+word}
確實是
形式擴展到咱這參數沒有設置或者爲空。如果它被設置,它不會擴展到參數的值,而是一些文字,您可以指定:
所以,
if [ -z ${1+x} ]; then
檢查位置參數$1
被設置爲一個值,其中如果它將被分配一個值x
並且檢查if [ -z 'x' ]
將失敗,但是如果$1
爲空,則擴展將爲if [ -z '' ]
,這意味着test
聲明爲真。
http://explainshell.com/explain?cmd = if +%5B + -z +%24%7B1%2Bx%7D +%5D%3B + then ++++++ error +%22Please + provide + some + information%22 + 1%3B + fi - 懸停在不同部分得到詳細的解釋 – baao