Вот ваши ошибки (источник):
SC2002 Бесполезный кот. Рассмотрим 'cmd & lt; файл | .. 'или' cmd-файл | .. 'вместо этого. SC2006 Используйте $ (..) вместо устаревшего `..`. SC2046 Чтобы предотвратить расщепление слов, сделайте это. SC2086 Двойная цитата, чтобы предотвратить глобирование и разбиение слов. SC2126 Рассмотрите возможность использования grep -c вместо grep | wc. 1 #!/bin/bash
2 #Script to create unique and permanent aliases
3
4 _add_alias()
5 {
6 echo "alias $1='$2'" | sudo tee -a $HOME/.bash_aliases
^––SC2086 Double quote to prevent globbing and word splitting.
7 echo "Alias successfully created"
8 }
9
10 if [ `cat $HOME/.bash_aliases | grep "alias $1=" | wc -l` == 0 ]
^––SC2046 Quote this to prevent word splitting.
^––SC2006 Use $(..) instead of legacy `..`.
^––SC2086 Double quote to prevent globbing and word splitting.
^––SC2002 Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead.
^––SC2126 Consider using grep -c instead of grep|wc.
11 then
12 if [ $# -eq 2 ]
13 then
14 if [ -f "$2" ] #This condition is always false, don't know why.
15 then
16 _add_alias $1 "$2"
^––SC2086 Double quote to prevent globbing and word splitting.
17 elif $2 > tmp.txt 2> tmp.txt
18 then
19 _add_alias $1 "$2"
^––SC2086 Double quote to prevent globbing and word splitting.
20 else
21 echo "Wrong command"
22 fi
23 rm tmp.txt
24 elif [ $# -gt 2 ]
25 then
26 echo "Error: Usage: addal alias_name 'command' (comand between quotes)"
27 elif [ $# -lt 2 ]
28 then
29 echo "Wrong number of parameters"
30 fi
31 else
32 echo "Alias name already exists"
33 fi