我在这里搜索并搜索了答案,我认为在bash中成为一个菜鸟的组合, 不知道正确的方法,而不是寻找合适的关键字意味着我无法克服最后的障碍。
我希望编写一个脚本,对我们的Netapp系统进行一些检查。我在完成2个第一个变量(VAR1& VAR2)方面遇到了一些困难...我尝试使用cut和awk命令,但我的所有尝试都没有成功。
我有一个文本文件(LUNS),它看起来像:
#SAN1; SAN2
abc1:abc1N
abc2:abc2N
a3:a3N
abcde4:abcde4N
所有行都是文字和数字。
对于tom文件的每一行,我想这样做:
我做了什么:
cat tom |grep -v "#" |while read ligne ; do
VAR1=awk -F ";" '{print $1}'
VAR2=awk -F ";" '{print $1}'
specific command to get the numeric VAR3 & VAR4 values.
#and run the comparaison like :
if [ "$VAR3" -ne "$VAR4" ]
then
echo "PROBLEM"
if [ "$VAR4" -lt "$VAR3" ] ; then echo $VAR4; rm $VAR4; else echo "call support"; fi
else
echo "Everything is OK"
fi
我的awk无法正常工作。 我愿意接受配置文件中的任何修改,或以我的方式获取VAR1& VAR2变量
我可以提供您的意见吗?
答案 0 :(得分:0)
您应该使用
命令下属$(some command)
例如a=$(ls)
OR
引用机制
因此awk
可以使用
VAR1=$(awk -F ";" '{print $1}')
VAR2=$(awk -F ";" '{print $1}')
或
VAR1=`awk -F ";" '{print $1}'`
VAR2=`awk -F ";" '{print $1}'`
答案 1 :(得分:0)
首先,你需要做
VAR1=$(echo $ligne|awk -F ";" '{print $1}')
VAR2=$(echo $ligne|awk -F ";" '{print $2}')
答案 2 :(得分:0)
无需使用awk
可以重写像
这样的循环#!/bin/bash
while read line;do
[[ "$line" =~ ^#.*$ ]] && continue
VAR1=${line%:*}
VAR2=${line#*:}
echo $VAR1
echo $VAR2
done < test