ubuntu中使用 比較字串報錯解決方法

2021-09-02 10:44:13 字數 1094 閱讀 6865

ubuntu12.04版本

以下指令碼,總是報錯

#!/bin/bash

while read line

dotesting=$(echo $line | grep -ic '')

if [ "$testing" == "1" ] ; then

#here [==] is reason

echo $line

fidone < dbinfo.xml

報錯的提示為

dbinfo2.sh: 6: [: 0: unexpected operator

dbinfo2.sh: 6: [: 1: unexpected operator

dbinfo2.sh: 6: [: 0: unexpected operator

dbinfo2.sh: 6: [: 0: unexpected operator

dbinfo2.sh: 6: [: 0: unexpected operator

dbinfo2.sh: 6: [: 0: unexpected operator

dbinfo2.sh: 6: [: 0: unexpected operator

查詢原因

1.ubuntu預設的shell版本為dash,改為鳥哥小菜中的bash

2.使用=(乙個等於號)比較字串的

其實,鳥哥推薦使用==(兩個等於號)比較字串,話說乙個有賦值的意思

那麼怎麼把sh改為指向bash呢?

最暴力的方法當然是直接把/bin/sh的軟鏈結改到bash中,

如:ln -s /bin/bash /bin/sh

但是,有優雅一些的方法,

sudo dpkg-reconfigure dash

出現選單問你是否要dash的時候,選no就可以了。

再次檢查一下, ls /bin/sh -al 發現軟鏈結指向/bin/bash就可以了。

只要ls -l 一下這個檔案 ->後面就是原始位址

ls -l sh

lrwxrwxrwx 1 root root 4 4月 26 16:46 sh -> bash

比較字串

其實這是在 c 從入門到精通 上摘抄的,由於不知道漢字怎麼排序,就查了查書,寫在這裡也可以幫助其他初學者更方便的找到漢字的排序方法。用於排序 int compare string str1,string str2 int compare string str1,string str2,bool ig...

字串比較

題目是這樣的 比較兩個字串,忽略大小寫,比較長度不超過n,比較順序為字典序。返回如下 0 s1 s2 0 s1 s2 0 s1 首先我們會先寫乙個函式名,我想大部分同學會寫成如下形式 int strncompare char s1,char s2,int n 是的,我開始也是這樣寫的。可是我突然覺得...

字串比較

1.publicstaticbooleanisempty string str 判斷某字串是否為空,為空的標準是 str null或 str.length 0 下面是 stringutils 判斷是否為空的示例 stringutils.isempty null true stringutils.is...