下面的代碼測驗字串中的字符是否匹配正則運算式。
str=")Y"
c="${str:0:1}"
if [[ $c =~ [A-Za-z0-9_] ]]; then
echo "YES"
output=$c
else
echo "NO"
output="-"
fi
echo $output
我正在運行它
source script-name.sh
但是,而不是預期的列印輸出
NO
-
我得到一個沒有破折號的空行
NO
我知道問題出在我(重新)分配輸出變數的方式上,這就是我的問題
- 如何正確地做到這一點?
- 為什么源實用程式有這樣的含義?
UPD_1:它適用于 Mac 的 zsh,而不是 bash UPD_2:僅當通過“source”實用程式(如“source script-name.sh”)運行腳本時才會出現此問題
使用“./script-name.sh”運行也會產生正確的結果。
uj5u.com熱心網友回復:
您的代碼在 RHEL7 上給出了 bash 4.2.46 的預期輸出。你可能在使用zsh嗎?
在 unix 命令列中查看echo 'the character - (dash)
編輯:好的,如果是 zsh,您可能必須使用 hack:
if [[ ${output} == '-' ]]; then
echo - ${output}
else
echo ${output}
fi
或使用 printf:
printf $output"\n"
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/515932.html
標籤:苹果系统壳zsh
