Я новичок в Linux и его программировании оболочки.
Я написал сценарий оболочки для Ubuntu и Linux Mint, который отлично работает на их системах.
Теперь, когда я попытался запустить этот скрипт оболочки в красной шляпе, весь вывод был странным.
Проблема:
\ n символов печатается как есть, новая строка не печатается.
некоторые ошибки, например expr:non-integer argument
. Я использовал для сравнения только три типа операторов -
1. if [ "$proto" = "TCP" ]
2. if [ "$prot_no" = "06" ]
3. if [ "$i" -eq 32 ]
Я не знаю, где именно ошибка, но в системах ubuntu и mint ошибки не было.
Я слышал, что оболочкой по умолчанию в Ubuntu является bash
, а в красной шапке - ksh
, но я не уверен в этом.
Если это так, то как я могу изменить свою оболочку или, если возможно, есть какая-нибудь команда, с помощью которой я могу запустить свой сценарий через оболочку bash, чтобы не было необходимости вносить какие-либо изменения в сценарий.
Пожалуйста, помогите мне .... Почти невозможно изменить все \n
символов в скрипте.
Edit:
для \n
выпуска, это образец строки ..
echo "\n\n$proto Header"
для других ошибок вот код, который может помочь ...
if [ "$trans_or_tunn" -eq 1 ]
then
prot_no=`head -n 1 decrypt.txt | awk -F " " '{printf "%s",$7}'`
if [ "$prot_no" = "06" ]
then
proto="TCP"
else if [ "$prot_no" = "11" ]
then
proto="UDP"
else if [ "$prot_no" = "3a" ]
then
proto="ICMP"
fi
fi
.....
echo "\n\n$proto Header"
эта строка должна была печатать одно из трех значений ..
TCP HEADER
, UDP HEADER
или ICMP HEADER
.
но то, что на самом деле выводится на экран, это ..
Вывод на экран для вышеуказанной строки
\n\nHeader