标签: brace-expansion

GNU find:在 -exec 中获取绝对路径和相对路径

我有一个echo我想运行的命令(不是!),它采用绝对路径和相对路径。

我如何获得这两个参数?

试图:

d=/tmp/foo;
find "$d" -type f -exec bash -c 'echo d=${1:${#d}} 1="${1%/*}"' bash {} \;
Run Code Online (Sandbox Code Playgroud)

(我喜欢 GNU find 因为它是递归的,可以按文件限制,可以按文件名过滤,并且不会产生过多的 shell)

期待:

mkdir -p /tmp/foo/bar/can/haz; touch /tmp/foo/bar/can/haz/bzr.txt
# cmd is run, output is:
d=bar/can/haz 1=/tmp/foo/bar/can/haz
Run Code Online (Sandbox Code Playgroud)

bash find string brace-expansion command-substitution

0
推荐指数
1
解决办法
1816
查看次数

mkdir -p dir 带括号创建错误

我在 Ubuntu 服务器 16.04 xenial 中执行了以下代码:

mkdir -p /root/backups/{db, dirs}
Run Code Online (Sandbox Code Playgroud)

我记得在另一个系统中,它就像创建所有 3 个目录的魅力一样:

/root/backups/
/root/backups/db
/root backup/dirs
Run Code Online (Sandbox Code Playgroud)

然而这一次的结果是:

/root/backups/
/root/backups/{db,
Run Code Online (Sandbox Code Playgroud)

为什么这是部分的、破碎的结果?

bash directory brace-expansion mkdir

0
推荐指数
1
解决办法
80
查看次数

变量替换语法可以统一吗?

这两种变量替换语法可以合二为一吗?

rm "$s_a/$domain.conf" 2>/dev/null
rm "$s_e/$domain.conf" 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

喜欢:

rm "$s_{a,e}/$domain.conf" 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

bash brace-expansion variable-substitution

0
推荐指数
1
解决办法
34
查看次数

我的更简单的 shell 片段与原始片段相同吗?

我正在对我的 POSIX shell 代码进行年度审查。

我可能发现了一个奇怪的行,我以前并不了解它:

原来的

[ $# -eq 3 ] && exit_code=$3 || exit_code=1
Run Code Online (Sandbox Code Playgroud)

新代码 - 更简单

exit_code=${3:-1}
Run Code Online (Sandbox Code Playgroud)

这两种方法在提供结果方面是否完全相同?

请详细说明是否有任何区别?

shell posix brace-expansion

0
推荐指数
1
解决办法
60
查看次数