gpt4 book ai didi

linux - 使用 sed 设置变量适用于命令行,但不适用于 bash 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 09:18:34 25 4
gpt4 key购买 nike

我已经寻找了很多答案,但到目前为止我没有找到任何有效的建议。

在命令行上,这有效:

$ myvar=$( cat -n /usr/share/dict/cracklib-small | grep $myrand | sed -e "s/$myrand//" )  
$ echo $myvar
$ commonness

然而,在 bash 脚本中,完全相同的行只是回显一个空行

注意 - $myrand 是一个数字,例如 $RANDOM 生成的 10340
cat 打印出带有行号的字典
grep 获取其中包含 $myrand 的行;例如10340共性
sed 旨在删除该行的 $myrand 部分并将其替换为空。这是我的示例脚本

#!/bin/bash
# prints out a random word
myrand=$RANDOM
export myrand
myword=$( cat -n /path/to/dict/cracklib-small | grep myrand | sed -e "s/$myrand//g" <<<"$myword" )
echo $myword

最佳答案

您的命令行代码正在运行:

grep $myrand

您的脚本正在运行:

grep myrand

这些不是一回事;后者正在寻找其中包含“myrand”的单词,而不是随机数。


顺便说一句——我建议用一种不同的方法来获得随机线。如果你有 GNU coreutils,shuf 工具是为特定目的而构建的:

myword=$(shuf -n 1 /path/to/dict/cracklib-small)

关于linux - 使用 sed 设置变量适用于命令行,但不适用于 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44501052/

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