[英]echo - Syntax error: Bad substitution
有問題的腳本:
1 #!/bin/bash
2
3 skl="test"
4 # get length
5 leng=$(expr length $skl)
6 # get desired length
7 leng=$(expr 22 - $leng)
8
9 # get desired string
10 str=$(printf "%${leng}s" "-")
11
12 # replace empty spaces
13 str=$(echo "${str// /-}")
14
15 # output
16 echo "$str obd: $skl $str"
17
但它輸出:
name.sh: 13: Syntax error: Bad substitution
請幫忙,謝謝,我將非常感激:)
以下行:
str=$(echo "${str// /-}")
導致Syntax error: Bad substitution
因為您沒有使用bash
執行腳本。 您正在使用sh
或dash
執行腳本,這會導致錯誤。
編輯:為了修復您的腳本以使其能夠與除了bash
之外的sh
和dash
一起使用,您可以替換以下行:
# get desired string
str=$(printf "%${leng}s" "-")
# replace empty spaces
str=$(echo "${str// /-}")
同
str=$(printf '=%.0s' $(seq $leng) | tr '=' '-')
使用純BASH功能取出所有不必要的expr調用:
#!/bin/bash
skl="test"
# get length
leng=${#skl}
# get desired length
leng=$((22 - leng))
# get desired string
str=$(printf "%${leng}s" "-")
# replace empty spaces
str=$(echo "${str// /-}")
# output
echo "$str obd: $skl $str"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.