сценарий удара, программируя вопрос

Нет необходимости в скриптах или функциях. Если вы просто поставьте $ HOME / BIN Последнее на вашем пути, он будет использоваться только в том случае, если в любом из предыдущих каталогов используется только соответствующее имя команды .

Пример:

[jenny@sameen ~]$ export PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin
[jenny@sameen ~]$ which foo
/usr/bin/which: no foo in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin)
[jenny@sameen ~]$ export PATH=$PATH:$HOME/bin
[jenny@sameen ~]$ which foo
~/bin/foo
[jenny@sameen ~]$ sudo cp bin/foo  /usr/local/bin/
[jenny@sameen ~]$ which foo
/usr/local/bin/foo

Если вы не доверяете, чтобы вы могли установить свой собственный путь, чтобы вы все еще хотели сделать чек из скрипта, вот пример:

#!/bin/bash
export ORIGPATH=$PATH  # to revert the path after checking for the binary
export PATH=`echo $PATH |sed -e 's{/home/jenny/bin:{{'`

MYNAME=`basename $0`

if  which $MYNAME
then
    BINFILE=`which $MYNAME`
    export PATH=$ORIGPATH 
    echo "Found $MYNAME in $BINFILE "
    $BINFILE
else
    export PATH=$ORIGPATH
    echo "Here goes the rest of the script"
fi
0
25.11.2018, 02:21
1 ответ

Ошибка в этих строках (которые встречаются дважды):

if [ $1 -eq 1 ] ; then
   echo
'

Одиночная кавычка должна быть на той же строке, что и echo. Если она находится в следующей строке, то она рассматривается не как аргумент к echo, а как следующая команда.

2
28.01.2020, 02:36

Теги

Похожие вопросы