在If语句和函数中重写多个条件

时间:2016-07-30 19:44:41

标签: bash function if-statement

我正在尝试检查参数的数量是否为1,以及我之前在脚本中编写的函数是否为真,但它不起作用:

private async void HandleRefreshAsync()
{
    var selectedCustomerId = SelectedCustomer?.Id;
    Customers = await customersService.GetCustomersAsync();
    SelectedCustomer = Customers.FirstOrDefault(_ => _.Id == selectedCustomerId);
}

// these are bound to SelectedItem/ItemsSource of Selector control
public Customer SelectedCustomer { ... }
public ObservableCollection<Customer> Customers { ... }

// this is just relay/delegate command, which is handled by HandleRefreshMethod
public RelayCommand RefreshCommand { ... }

“lgt”是一个函数名称。

我试图使用(([[[引用多个if语句,但它也不起作用。也许我应该将参数检查和函数的数量与引号分开,但我不知道该怎么做我想知道是否有可能将if [ $# -eq 1 && echo "$1" | lgt && echo "Invalid Length - $1" && echo "$1" | checking_another_function_etc ]; then echo "some output" && exit 1 命令传递给echo条件。

问题是在检查所有函数后我需要一个if语句,但在每个函数之后我需要它自己的echo语句。

1 个答案:

答案 0 :(得分:3)

[是一个普通的命令(也拼写为test); [ / ]对不能简单地包围命令列表。 -eq仅评估[表达式;其他是由shell &&运算符连接的单独命令。

if [ $# -eq 1 ] &&
   echo "$1" | lgt &&
   echo "Invalid Length - $1" &&
   echo "$1" | checking_another_function_etc; then
    echo "some output" && exit 1
fi

可能的命令分离可能会提供您所期望的:

if [ $# -ne 1 ]; then
    echo "Wrong number of arguments"
    exit 1
elif ! echo "$1" | lgt; then
    echo "Invalid length: $1"
    exit 1
elif echo "$1" | checking_another_function_etc; then
    echo "some output"
    exit 1
fi

echo命令作为&&运算符的LHS很少有用,因为它的退出状态始终为0.