想了解如何在Bash中获得if构造的反义词?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于bashif语法的相关问题,此外,我们还将为您介绍关于linux–如何在bash中从字符串中获取最
想了解如何在Bash中获得if构造的反义词?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于bash if语法的相关问题,此外,我们还将为您介绍关于linux – 如何在bash中从字符串中获取最后一个数字?、linux – 如何在bash中获取从Ping接收的数据包的百分比?、linux – 我们如何在Bash中获得两个数组的并集?、在bash/ksh中获取命令的退出代码的新知识。
本文目录一览:- 如何在Bash中获得if构造的反义词?(bash if语法)
- linux – 如何在bash中从字符串中获取最后一个数字?
- linux – 如何在bash中获取从Ping接收的数据包的百分比?
- linux – 我们如何在Bash中获得两个数组的并集?
- 在bash/ksh中获取命令的退出代码
如何在Bash中获得if构造的反义词?(bash if语法)
解决方法
if ! date -d "2012010123"; then # do something here (date returned with non-zero exit code) fi
引用帮助测试:
! EXPR True if expr is false.
linux – 如何在bash中从字符串中获取最后一个数字?
如何从字符串中获取最后一个数字?
泛型字符串的示例:
If str=str1s2 echo $str | cmd? I get 2 If str=234ef85 echo $str | cmd? I get 85 If str=djfs1d2.3 echo $str | cmd? I get 3
“CMD?”是我想要的命令/脚本
解决方法
gv@debian:~$echo 234ef85 |grep -Eo '[0-9]+$' ## --> 85 gv@debian:~$echo 234ef856 |grep -Eo '[0-9]+$' ## --> 856 gv@debian:~$echo 234ef85d6 |grep -Eo '[0-9]+$' ## --> 6 gv@debian:~$echo 234ef85d.6 |grep -Eo '[0-9]+$' ## --> 6 gv@debian:~$echo 234ef85d.6. |grep -Eo '[0-9]+$' ## --> no result gv@debian:~$echo 234ef85d.6.1 |grep -Eo '[0-9]+$' ## --> 1 gv@debian:~$echo 234ef85d.6.1222 |grep -Eo '[0-9]+$' ## --> 1222
linux – 如何在bash中获取从Ping接收的数据包的百分比?
解决方法
此表达式将捕获“X%数据包丢失”中的百分比数字
ping -c 5 -q $host | grep -oP '\d+(?=% packet loss)'
然后,您可以从100中减去“损失”百分比,以获得“成功”百分比:
packet_loss=$(ping -c 5 -q $host | grep -oP '\d+(?=% packet loss)') echo $[100 - $packet_loss]
linux – 我们如何在Bash中获得两个数组的并集?
arr1=("one" "two" "three") arr2=("two" "four" "six")
在Bash中将这两个数组联合起来的最佳方法是什么?
解决方法
arr3=("${arr1[@]}" "${arr2[@]}")
然后,应用this post中的解决方案对其进行重复数据删除:
# Declare an associative array declare -A arr4 # Store the values of arr3 in arr4 as keys. for k in "${arr3[@]}"; do arr4["$k"]=1; done # Extract the keys. arr5=("${!arr4[@]}")
这假设是bash 4.
在bash/ksh中获取命令的退出代码
command="some command" saferuncommand $command saferuncommand() { cmnd=$1 $($cmnd) if [ $? != 0 ]; then printf "Error when executing command: '$command'" exit $ERROR_CODE fi }
但这个代码不工作的方式,我想要的。
我在哪里犯错误?
#!/bin/ksh saferuncommand() { typeset cmnd="$*" typeset ret_code echo cmnd=$cmnd eval $cmnd ret_code=$? if [ $ret_code != 0 ]; then printf "Error : [%d] when executing command: '$cmnd'" $ret_code exit $ret_code fi } command="ls -l | grep p" saferuncommand "$command"
现在,如果你看看这段代码,我改变的几件事情是:
>使用排版不是必要的,但是一个好的做法。它使cmnd和ret_code local到saferuncommand
>使用ret_code不是必要的,但是一个好的做法是将返回代码存储在一些变量中(并将其存储在ASAP中),以便以后可以像在printf中使用它“Error:[%d] when execution command:’$ command ‘“$ ret_code
>传递带有引号的命令,例如saferuncommand“$ command”。如果你不然那么cmnd将只获得值ls而不是ls -l。更重要的是,如果你的命令包含管道。
>如果要保留空格,可以使用typesnd cmnd =“$ *”而不是排版cmnd =“$ 1”。你可以尝试两者,取决于你的命令参数有多复杂。
> eval用于求值,以便包含管道的命令可以正常工作
注意:记住一些命令给出1作为返回码,即使没有像grep一样的错误。如果grep找到了东西,它会返回0 else 1。
我用KSH / BASH测试。它工作正常。让我知道如果你面对问题运行这个。
今天关于如何在Bash中获得if构造的反义词?和bash if语法的分享就到这里,希望大家有所收获,若想了解更多关于linux – 如何在bash中从字符串中获取最后一个数字?、linux – 如何在bash中获取从Ping接收的数据包的百分比?、linux – 我们如何在Bash中获得两个数组的并集?、在bash/ksh中获取命令的退出代码等相关知识,可以在本站进行查询。
本文标签: