我正在尝试检查参数的数量是否为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
语句。
答案 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.