我已經找到了相當多的答案,但我沒有找到任何建議,迄今爲止工作。使用sed來設置一個變量在命令行上工作,但不是bash腳本
命令行上,這個工程:
$ myvar=$(cat -n /usr/share/dict/cracklib-small | grep $myrand | sed -e "s/$myrand//")
$ echo $myvar
$ commonness
然而,一個bash腳本中完全相同的線路只是呼應了一個空行
筆記 - $ myrand是一個數字,就像產生10340 $ RANDOM
貓打印出行號爲
的字典 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
使用前myrand打印它,並檢查可能與該號碼不存在線 – tso
順便說一句,這是一個非常糟糕的方式來得到一個隨機線。 'grep 1'將匹配1,10,11,113等; 'grep 101'將會找到2101,3101,1013等等。或者你可以得到一個不存在於該文件中的數字,並且根本沒有匹配。 –
是的,你是對的。只是練習。我會找到另一種方式來獲得一個隨機行 - grep -w似乎工作 –