相关疑难解决方法(0)

Bash“for”循环没有“in foo bar ...”部分

我最近正在查看一些让我感到困惑的代码,因为它可以工作,但我没想到它会如此。代码简化为这个例子

#!/bin/bash
for var;
do
  echo "$var"
done
Run Code Online (Sandbox Code Playgroud)

使用命令行参数运行时会打印它们

$ ./test a b c
a
b
c
Run Code Online (Sandbox Code Playgroud)

这就是(对我而言)出乎意料的。为什么这不会导致错误,因为var是 undefined ?使用这被认为是“良好做法”吗?

shell bash control-flow

29
推荐指数
2
解决办法
4050
查看次数

在 find -exec 中使用 basename?

如果我只使用 basename {} .txt,它会起作用:

find . -iname "*.txt" -exec basename {} .txt \;
Run Code Online (Sandbox Code Playgroud)

它只会打印 xxx 而不是 ./xxx.txt

如果我想在 -exec 选项中使用 $(basename {} .txt) ,它将失败:

find . -iname "*.txt" -exec echo "$(basename {} .txt)" \;
Run Code Online (Sandbox Code Playgroud)

它只会打印 ./xxx.txt

我怎么解决这个问题?我希望我可以$(basename {} .txt)用作其他 cmd 的参数。我必须用 xargs做sh -c或管道-exec basename {} \;吗?

find basename

6
推荐指数
3
解决办法
2万
查看次数

标签 统计

basename ×1

bash ×1

control-flow ×1

find ×1

shell ×1