Bash Выполнить код, если переменная не пуста - PullRequest
0 голосов
/ 01 августа 2020

Надеюсь, у вас отличные выходные,

Я пытаюсь создать скрипт, который будет выполнять только если переменная не пуста и если переменная пуста, выполните команду только один раз , примерно так:

#!/bin/bash
X=$1
function execute
{
if [ ! -z $X ]
then
  $*
fi
}
execute for count in 1 2 3 4
execute do
  execute echo $count
  echo $(hostname)
execute done

1 Ответ

1 голос
/ 01 августа 2020

Цитаты - ваши друзья

Вы должны заключать переменные в кавычки, и вам также следует использовать тестовую конструкцию Bash, если переносимость не является проблемой. С вашим кодом могут быть и другие проблемы, но этот рефакторинг должен решить проблему, о которой вы конкретно спрашиваете.

#!/bin/bash

x="$1"

execute () {
    if [[ -n "$x" ]]; then
      "$@"
    fi
}

for count in {1..4}; do
  execute echo "$count"
  echo $(hostname)
done

В зависимости от вашего имени хоста это будет примерно так:

1
localhost.local
2
localhost.local
3
localhost.local
4
localhost.local
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...