Bash:For 循环单行

Bash:For 循环单行
for i in {1..4}; do echo "Welcome $i";done

我想

Welcome 1
Welcome 2
.
.

相反我得到

welcome {1..4}

安卓终端模拟器

答案1

您正在/bin/sh(shell)中运行,而不是/bin/bash。

$ /bin/sh -c 'for i in {1..4}; do echo "Welcome $i";done'
Welcome {1..4}

现在尝试使用 bash:

$ /bin/bash -c 'for i in {1..4}; do echo "Welcome $i";done'
Welcome 1
Welcome 2
Welcome 3
Welcome 4

如果你更喜欢 shell,那么就按照 Nikolas 写的那样做:

for i in $(seq 4); do echo "Welcome $i" ; done

但我建议使用 Bash。

答案2

您没有运行bash,或者您正在运行旧版本的bash,或者不理解大括号扩展的 shell。

最可能的解释是您的终端仿真器正在运行/bin/sh或正在运行一些较小的 shell(希望仍然主要兼容 POSIX)。

bash(以及任何其他支持大括号扩展的 shell)中,显式 for 循环可能会更改为隐式循环:

printf 'Welcome %d\n' {1..4}

或者

printf 'Welcome %d\n' $(seq 4)

如果您没有大括号扩展但有seq.

答案3

作为善行难陀说,要么你没有运行bash,要么版本不是很好最近的。我已经在旧版本的 bash 中测试了以下内容(也许在它形成其习惯用法之前?)并且它sh也适用于:

for i in `seq 1 4`;do echo "Welcome $i";done

这应该够了吧。

答案4

如果您使用此应用程序:安卓终端模拟器,“那么它是一个用于与内置Android shell通信的终端模拟器”。也就是说,如果您没有手动安装自己的 bash 版本(您的设备应该为此进行 root 操作。您是否对您的设备进行了 root 操作?),那么您拥有默认的 Android shell,而不是 bash。因此,您只能使用 Android 的 shell 功能集,而不能使用高级 bash 语法和功能,例如:{1..4}.

一些资料,我查到的。

相关内容