Ваша проблема в том, что ваш скрипт перебирает каждый аргумент и выполняет все команды независимо от того, является ли аргумент правильной точкой монтирования. Я не тестировал это, но решение ниже должно дать вам желаемый результат.
now="$(date +%Y-%m-%dT%H:%M:%S)"
sp=" "
NFS="NFS1 NFS2 NFS3"
MOUNT_STATUS="$TRUE FALSE" #TRUE or FALSE
RUN_TIME="" #Start time to endtime of script per NFS
if [ $# -eq 0 ]; then
echo $now
set -e
else
for i in "$@"; do
echo -n "$now" ;
if [ -d $i ]; then
echo -n NFS=$(df -hP "$i" | awk '{print $NF}' | sed -n '1!p') 2>&1 | sed 's/^/ /' ;
echo $(if [[ "$i" == "/media /a/nbackup201 /a/ndt301" ]] ;
echo -n MOUNT_STATUS=;
then
echo 'TRUE' ;
else
echo $([[ "$i" != "/media /a/nbackup201 /a/ndt301" ]]) ;
echo 'FALSE' ; fi) | sed 's/^/ /'
else
echo -n NFS=$i MOUNT_STATUS=false
done
fi
Вы можете просто удалить все от курсора до конца строки с помощью kill-line
или vi-kill- виджет eol
.
kill-line
по умолчанию привязана к Control + K . В режиме vi vi-kill-eol
по умолчанию привязан к D в командном режиме. Поэтому вам нужно войти в режим vicmd (по умолчанию Escape ), а затем нажать D
В качестве альтернативы вы можете добавить пользовательскую привязку для kill-line
] в режиме вставки ( viins ) для немедленного доступа. Например, чтобы привязать его к Control + K , запустите
bindkey '^ K' kill-line