簡體   English   中英

bash子字符串在解釋器模式下工作,但在shell腳本中不工作

[英]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.

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