好的,所以我刚刚开始学习网络安全,并且在这之前不了解linux。我正在尝试编写一个脚本,它基本上会执行wireshark中的GUI,当您按照tcp流然后导出对象时。我几乎没有任何编码背景,我想知道最好的格式。一切都工作得很好然后我决定添加一个函数来测试输出与原始md5sum。我无法让它发挥作用。
function testScript {
if [[ $test == "yes" ]]; then
echo "Type original file path: ";
read ogfpath;
md5sum "$fpath" "$ogfpath" > print
else
echo "Goodbye"
fi
}
echo -n 'Type stream number and press ENTER: '
read stream
echo -n 'Type pcap path and press ENTER: '
read pcap
echo -n 'Type magic number and press ENTER: '
read mnum
echo -n 'Type new file path and press ENTER: '
read fpath
tshark -2 -q -z follow,tcp,raw,$stream -r $pcap | tr '\n' ' ' | sed 's\ \\g' | grep -oP "(?<="$mnum").+" | sed "s/^/"$mnum"/g" | xxd -r -p > $fpath
echo -n 'Do you want to test the program (y/n)? :'
read test
testScript
答案 0 :(得分:1)
我在这里看到的问题是你的$ test变量是本地的,只能从内部访问你的函数,换句话说,除非它在函数内部定义,它在那里不存在所有
解决这个问题的一个简单方法是将参数传递给函数,这在bash中非常容易。例如:
function test {
if [ "$1" == "yes" ]; then
echo "True!"
else
echo "False!"
fi
}
test "yes"
在这个例子中,参数传递给函数&#34; test&#34;是&#34;是&#34;,通过变量$ 1在函数内部访问。可以将更多参数传递给函数并按顺序访问,$ 2 $ 3等。在您的情况下,您的函数必须像这样调用:
testScript $test
函数中的if语句必须如下所示:
if [[ $1 == "yes" ]]; then