[英]reading the first line from each file and comparing them to a reference number
我有三個輸入文件。 我將閱讀每個輸入文件的第一行,並將它們與參考數字進行比較。 我從不同的輸入文件中讀取的所有值(a1,a2和a3)應小於我的“絕對參考值(面)”。 我的腳本給出了參考值的錯誤:行..:-2.13:沒有這樣的文件或目錄。 如何修復我的代碼? 而我的條件是否正確?
#!/bin/bash -f
a1=$(head -n 1 input1.xvg)
a2=$(head -n 1 input2.xvg)
a3=$(head -n 1 input3.xvg)
aref=-2.13
if [a1 < $aref && a2 < $aref && a3 < $aref] ; then
echo "It's good"
else
echo "It isn't good"
fi
在if語句中使用[[代替[]。 因為您正在使用[shell認為您正在傳遞文件,而不是與值進行比較。
嘗試這樣寫你的
if [[ $a1 < $aref && $a2 > $aref && $a3 > $aref ]] ; then
要使用aref的絕對值,請使用以下命令:
let "aref=$aref<0?-$aref:$aref"
以及語法錯誤(測試中[
和]
之前需要空格,並且變量名中缺少$
),這似乎是您在嘗試比較浮點數,bash不支持。 一種選擇是在算術上下文中使用bc
代替:
if (( $(bc <<<"$a1 < $aref && $a2 > $aref && $a3 > $aref") )); then
echo "It's good"
else
echo "It isn't good"
fi
根據條件是對還是錯,命令替換$( ... )
的輸出為1
或0
。 如果輸出返回1,則算術上下文(( ... ))
返回成功,如果返回0,則返回失敗。
如果要使用變量的絕對值,一種方法是使用${a1#-}
, ${aref#-}
等,以從每個變量中刪除前導-
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.