用于打印所有文件夹的 Bash 代码:
for f in ~/*;
do
if [ $f == '/home/sk/.' -o $f == '/home/sk/..' ]; then
true
else
echo "$f"
fi
done
Run Code Online (Sandbox Code Playgroud)
它适用于 bash。当我在 z shell 上运行代码时,它抛出了错误:
= not found
Run Code Online (Sandbox Code Playgroud)
然后我转换[
为[[
, ]
into]]
以避免在 z shell 中出现此错误并在 z shell 上运行它。它抛出了下一个错误:
condition expected: $f
Run Code Online (Sandbox Code Playgroud)
使用[[
and ]]
,bash 也会抛出错误:
syntax error in conditional expression
syntax error near `-o'
Run Code Online (Sandbox Code Playgroud)
是否有一个 POSIX 标准可以在 shell 中进行字符串比较,它可以跨 shell 工作?
ter*_*don 27
这里有各种各样的问题。首先,==
不是标准的,POSIX 方式是=
. 对于-o
. 这将适用于 bash 和 zsh:
for f in ~/*;
do
if [ "$f" = '/home/sk/.' ] || [ "$f" = '/home/sk/..' ]; then
true
else
echo "$f"
fi
done
Run Code Online (Sandbox Code Playgroud)
请注意,您if
不需要,默认情况下在 bash 和 zsh 中都会忽略点文件。你可以简单地写:
for f in ~/*; do echo "$f"; done
Run Code Online (Sandbox Code Playgroud)
甚至
printf "%s\n" ~/*
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24666 次 |
最近记录: |