Shell語法錯誤----變數與空格[: too many arguments
我們先來看一段指令碼
ret="Peter Anne"
if [ $ret == "Peter Anne" ]; then
echo "pass"
else
echo "failed"
fi
程式上看,這段程式碼的邏輯和寫法都是沒有錯誤的。但是其實,實際執行結果將會是:
run.sh: [: too many arguments(引數過多)
failed
大致的意思是說,if 後面所跟著的引數過多了,我們可以看見這句if語句
if [ $ret == "Peter Anne" ];
它的引數分別為 [,$ret, ==,"Peter Anne",],一共5個引數。(”[“也是被當作引數,這就是為什麼”[“一定要有空格的緣故,詳細可以檢視Linux的書籍)
如果正常5個引數,是沒有問題的,但是問題出在了$ret變數裡。
其實,在Linux系統中的真實解析方式,其實是:
if [ Peter Anne == "Peter Anne" ],引數則分為:
[,Peter,Anne, ==,"Peter Anne",],一共6個引數。
所以上述程式碼,其實應該改寫成($ret變為"$ret"):
ret="Peter Anne"
if [ "$ret" == "Peter Anne" ]; then(引數則為5個)
echo "pass"
else
echo "failed"
fi
這種寫法才是正確的。
相關推薦
Shell語法錯誤----變數與空格[: too many arguments
我們先來看一段指令碼ret="Peter Anne"if [ $ret == "Peter Anne" ]; then echo "pass"else echo "failed"fi程式上看,這段程式碼的邏輯和寫法都是沒有錯誤的。但是其實,實際執行結果將會是:run.sh: [: too many a
Xcode報錯Xcode匯入runtime框架函式引數沒有提示或Too many arguments to function call, expected 0, have 2錯誤
前言:在引入<objc/runtime.h> 與 <objc/message.h> 後,呼叫objc_msgSend(),會報如下錯誤: 報錯原因: 從Xcode6之後,蘋果不推薦我們使用runtime,所以就取消了引數提示功能。 修改方法:按照如上圖的方式操作,
Linux程式設計 11(shell全域性環境變數與局變環境變數)
一.概述 在linux中,很多程式和指令碼都通過環境變數來獲取系統資訊,儲存臨時資料,配置資訊。環境變數是指用來儲存有關shell會話和工作環境資訊,允許你在記憶體中儲存資料,以便程式或shell中執行的指令碼能夠輕鬆訪問到它們。也是儲存持久資料的一種簡便方法。在bash shell中,環境變數分為:全域
Shell程式設計 Bash引號與空格那點事
轉載自 https://www.jb51.net/article/60329.htm 空格太坑啊,我第一次打個99乘法表瘋狂錯,不忍心看到後面還有人還因為經常這麼曲折的過來 先了解下,在bash指令碼中,有三種引號 1. 單引號 ’ 2. 雙引號 " 3. 反引號 ` 單引號
error #18 expected a “)”和error #140 too many arguments in function call
1.當巨集定義名和函式形參名衝突時,會在函式宣告的地方出現錯誤error #18 expected a “)” 例如:#define SlaveAddress 0xD0 uint8_t Single_ReadI2C(uint8_t Slav
objc_msgSend()報錯Too many arguments to function call ,expected 0,have3
Build Setting--> Apple LLVM 6.0 - Preprocessing--> Enable Strict Checking of objc_msgSend Call
Git建立祕鑰時提示:too many arguments解決
①問題:剛剛進入Spring大門!一邊著手準備入坑《Spring原始碼深度解析》,一邊準備見識GitHub新世界,結果在準備使用Git時被攔在了建立祕鑰報錯:Too many arguments這裡! [email protected] MINGW64 ~ $ s
Qt下關於tuple用法 ”too many arguments“警告解釋
Qt環境下使用tuple#include <QCoreApplication>#include <windows.h>#include <windowsx.h>#include <QDebug>#include <QStr
too many open files錯誤
一個 google pid .json 斷開連接 ret 服務 spi end 雖然一直在Linux下開發服務,但是說實話,Linux的東西我基本不懂。這次這個問題的解決,讓我稍微知道一些東西了。 大家都知道,最近我模仿binux大嬸的pyspider的害羞組在線上跑了一
網站時常出現too many connection的錯誤
網站時常出現too many connection的錯誤安裝了一個程序,大訪問量測試的時候發現竟然連接不上數據庫了,仔細檢查發現MySQL數據庫出現1040錯誤,提示“too many connections”。那麽改如何解決這個問題呢?其實MySQL默認的最大連接數為100,可能在大訪問量的時候造成了連接不
Go連接MySql數據庫Error 1040: Too many connections錯誤解決
next cal err 情況 為什麽 語句 就是 sel com 原文:https://my.oschina.net/waknow/blog/205654 摘要: 使用Go鏈接數據庫時,由於連接釋放不當會在一段時間以後產生too many connections的錯
python 語法錯誤與異常
問題 ber 信息 nbsp 解釋 num 了解 判斷 god 語法錯誤與異常 語法錯誤,例如: while True print(”my god“) 這面這裏錯的地方在於沒有加:冒號以及打印要換到第二行 異常,例如: num = 9 print("nummber
解決 ln -s 軟鏈接產生的Too many levels of symbolic links錯誤
方法 ref log -s level block .com 解決 HR 參考: ln -s 軟鏈接產生Too many levels of symbolic links錯誤 解決 ln -s 軟鏈接產生的Too many levels of symbolic links錯
Shell語法——參數變量,測試與比較
等於 文件的 單個字符 amp $2 body 一個 所有 豎線 特殊變量 變量 說明 $0 獲取當前執行的 Shell 腳本的文件名,如果執行腳本包含了路徑,則包含腳本路徑 $n 獲取當前執行的 Shell 腳本的第 n 個參數值,即 n=1..9,n
linux系統下too many files open如何定位與解決
title 存儲 適應 print park lin 理論 描述符 通過 當應用進程打開的文件句柄數大於系統設置的句柄數,服務就會報錯too many files open,那麽如何解決這個問題呢? 1:查看當前系統設置的最大句柄數 命令:ulimit -a;可以看見
shell變數與數字運算
shell變數與數字運算,變數與數字不能直接運算。 變數與數字直接運算,結果是play+1,如下所示: play=2 play=play+1 echo $play #輸出結果 play+1 加上let 後,運算結果正確,示例如下: play=2 let play=play+1 ec
Crontab內環境變數與Shell環境變數的關係及解決問題的辦法
問題 有時需要用到Crontab的定時任務去執行指令碼,但是發現通過命令(./test.sh)執行Shell檔案的時候,可以獲取Linux的環境變數;可是通過Crontab做的定時任務,無法獲取。 問題剖析 crontab有一個壞毛病,就是它總是不會預設的從使用者profi
shell變數與運算
shell變數與運算 變數存在於記憶體中。假設變數str,設定或修改變數屬性時,不帶$號,只有引用變數的值時才使用$號。也就是說在記憶體中,標記變數的變數名稱是str,而不是$str。 變數資料的儲存方式本身是有型別之分的,分為資料(整數、浮點型)和字元,在java等一些語言中,需要提前宣告變數是哪種型別
exchange shell 報錯winrM 無法處理該請求,因為輸入 XML 包含語法錯誤。
hang 服務 ntc 卸載 roc vpd 沒有 問題 未能 網卡1和網卡2 互換了一下IP 後連接exchange shell 報錯如下宿主機是HYPER-V平臺互換IP沒有問題,KVM平臺就報錯將IP換過去也沒能解決這個問題卸載exchange重新安裝未能解決最後通過
錯誤異常too many open files解決方法
一、產生原因 too many open files是Linux系統中常見的錯誤,從字面意思上看就是說程式開啟的檔案數過多,不過這裡的files不單是檔案的意思,也包括開啟的通訊連結(比如socket),正在監聽的埠等等,所以有時候也可以叫做控制代碼(handle),這個錯誤通常也可以叫做控制代