[英]bash substring working in interpreter mode but not in shell script
當我嘗試在解釋器模式下在bash shell中執行子字符串時,得到預期的輸出
bash-4.2$ x="SomeString"
bash-4.2$ echo $x
SomeString
bash-4.2$ y=${x:0:4}
bash-4.2$ echo $y
Some
bash-4.2$
而在shell腳本中運行相同的命令時,出現錯誤。
bash-4.2$ cat shell.sh
x="SomeString"
echo $x
y=${x:0:4}
echo $y
bash-4.2$ sh shell.sh
SomeString
shell.sh[3]: y=${x:0:4}: 0403-011 The specified substitution is not valid for this command.
bash-4.2$
具有諷刺意味的是,當我通過bash-4.2$ ./shell.sh
調用shell時,它正在工作。
這里發生了什么事?
我在AIX機器上。
子字符串是bash
擴展。 當您將其作為sh
運行時,它將禁用此擴展名。 使用bash shell.sh
,它將起作用。
您還應該在腳本的開頭放置#!/bin/bash
,以確保在將bash
作為命令調用時與bash
運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.