簡體   English   中英

echo - 語法錯誤:錯誤的替換

[英]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執行腳本。 您正在使用shdash執行腳本,這會導致錯誤。


編輯:為了修復您的腳本以使其能夠與除了bash之外的shdash一起使用,您可以替換以下行:

# 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM