gpt4 book ai didi

linux - Bash 脚本变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:31 26 4
gpt4 key购买 nike

#!/bin/bash

RESULT=$(grep -i -e "\.[a-zA-z]\{3\}$" ./test.txt)

for i in $(RESULT);
do
echo "$i"
FILENAME="$(dirname $RESULT)"
done

FILENAME="$(dirname $RESULT)" 行有问题。在 Debug模式下运行脚本(bash -x script-name),输出为:

test.sh: line 9: RESULT: command not found

由于某些原因,它无法获取变量 RESULT 的结果并将 dir 命令的输出保存到新变量 FILENAME。我不明白为什么会这样。

经过多次尝试,我找到了将 finame 和 finame 的完整路径保存到两个不同变量的解决方案。现在,我想要为每个 finame,找到每个文件名的不区分大小写。比如找文件image.png,不管文件是不是image.PNG

我正在运行脚本

while read -r name; do
echo "$name"
FILENAME="$(dirname $name)"
BASENAME="$(basename $name)"
done < <(grep -i -e "\.[a-zA-z]\{3\}$" ./test.txt)

然后输入命令:

find . $FILENAME -iname $BASENAME

但它说找不到命令 FILENAME 和 BASENAME。

最佳答案

语法:

$(RESULT)

表示命令替换。这样说会尝试运行命令 RESULT .

为了代入变量RESULT的结果,说:

${RESULT}

相反。


此外,如果命令返回多行输出,则此方法无效。

而是说:

while read -r name; do
echo "$name"
FILENAME="$(dirname $name)"
done < <(grep -i -e "\.[a-zA-z]\{3\}$" ./test.txt)

<(command)语法称为 Process Substitution .

关于linux - Bash 脚本变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20881881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com