Test: argument expected


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Test: argument expected
# 1  
Old 08-19-2013
Test: argument expected

The following example prompts are passed into the shell script.
Code:
$1 = /tmp/dir/
$2 = varies (test.txt, test1.txt, test2.txt...)
$3 = test_YYYYMMDD.txt

---------------------------------------------------------------------------
Code:
#!/bin/sh
cd $1

if [ $2 = "test.txt" ]; then
        if [ -e $2 ]; then
                echo $2 $3
                echo 'File already exists'
                mv $2 $3
                exit 1
        else
                echo 'File not found'
                exit 0
        fi
else
        if [ -s $2 ]; then
                echo $2 $3
                echo 'File already exists and is not empty'
                mv $2 $3
                exit 1
        else
                echo 'File not found or is empty'
                exit 0
        fi
fi

------------------------------------------------------------
If say the file is test1.txt then it finishes correctly with no errors. However, if it is test.txt then I can see it evaluate the -e part because I turned on debugging. What I see is:
+ [ test.txt = test.txt ]
+ [ -e test.txt ]
scriptpathandscriptname: test: argument expected

Does anyone have any information as to why I am getting the argument expected? Any information would be helpful.

Moderator's Comments:
Mod Comment edit by bakunin: when we asked you to PLEASE USE CODE TAGS we really meant it. Use them!

Last edited by bakunin; 08-19-2013 at 11:55 AM..
# 2  
Old 08-19-2013
Dont you have to use [ $2 == "test.txt" ] instead?
# 3  
Old 08-19-2013
I think I tried that and it gave me an error: test: unknown operator ==
# 4  
Old 08-19-2013
Quote:
Originally Posted by smkremer
Code:
cd $1

if [ $2 = "test.txt" ]; then

The prolem is probably one of the lines i have quoted or the similar lines in your code. You should always quote such strings, in case they are empty or containing blanks, tabs and other special characters:

Code:
cd "$1"

if [ "$2" = "test.txt" ]; then

etc..

I hope this helps.


bakunin
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Error- test: argument expected

check_build_info_table() { if then export build_info_table=`sqlplus -s sna/dbmanager <<! set pagesize 0 heading off feedback off SELECT DISTINCT TABLE_NAME FROM ALL_TABLES WHERE OWNER = 'XYZ' AND TABLE_NAME = 'MY_TABLE'; exit !` ... (3 Replies)
Discussion started by: ambarginni
3 Replies

2. UNIX for Advanced & Expert Users

Error:--test: argument expected--Even though i give an argument.

Hi All, I am running the script VBoxManage list vms |sed 's/"//g' | cut -d " " -f1 > har1out.mytxt result=`cat har1out.mytxt | grep $1' echo $result echo $1 { if then echo pass else echo fail fi (2 Replies)
Discussion started by: harsha85
2 Replies

3. Shell Programming and Scripting

error : test: argument expected

Hello all, I am trying to figure out why i am getting an error while executing the script...altought it seems like its work...but still get the test arguement error...any help would be appericiate...this script basically connects to any oracle db ( just have to pass db name to it)... (4 Replies)
Discussion started by: abdul.irfan2
4 Replies

4. Shell Programming and Scripting

test: argument expected

# to search a file if it exists and whether its readable or not # if yes print its first 5 lines echo enter the filename to be searched read fname if #-d $fname then echo file doesn exists elif then echo its a directory elif then cat $fname else echo its not readable fi # end of... (9 Replies)
Discussion started by: gotam
9 Replies

5. Shell Programming and Scripting

Test: argument expected.

Hi, Since i am new to Unix and on suggestion on some smart guys on unix... i have decide to learn more deeply on Unix...so i was kind of playing with if statements and found this error... though i tried to correct is for hours now i couldnt find whats wrong in my loop. if then ... (4 Replies)
Discussion started by: bhagya2340
4 Replies

6. Shell Programming and Scripting

test: argument expected

+ test.sh: test: argument expected #!/bin/bash if then echo thennnn else echo elseeee fi why does it show this error? Clearly from debug mode, the argument is passed. I also tried if Run on Solaris 9. Thanks (10 Replies)
Discussion started by: lalelle
10 Replies

7. Shell Programming and Scripting

test: argument expected

I'm newbie to coding script so i found test: argument expected when i run it. please help me a=`df -k |awk '{print $5 }'|egrep "(100%|%)"|cut -d"%" -f1|tail -1` if then df -k|egrep "(100%|%)"|awk '{print $1,$5,$6}' else echo "No disk capacity more than 80%" fi thk in advance (7 Replies)
Discussion started by: unitipon
7 Replies

8. Shell Programming and Scripting

test: argument expected

Can someone help me with a very simple query I have the following script: #!/bin/sh VAR1="" if then VAR1="Message" fi echo $VAR1 put when i run it i get the following error test_job.sh: test: argument expected (5 Replies)
Discussion started by: andy202
5 Replies

9. UNIX for Dummies Questions & Answers

test:argument expected

Hi all, I am getting "test:argument expected" error in the following script LOGDIR=$XXAR_TOP/log PROGRAM_NAME=XXAR_GPS_LBFDMSGEN .. .. .. Check_Errors() { sqllogfile=$1 cd ${LOGDIR} countfile=${LOGDIR}/${PROGRAM_NAME}.tmp echo "countfile is " $countfile >> $LOGFILE echo... (4 Replies)
Discussion started by: rrs
4 Replies

10. Shell Programming and Scripting

ERROR-> test: argument expected , what does it mean?

I am trying to compare two integer variables in the if statement, but i am getting this "test:argument expected". What am i missing? Why is the if loop not executing correctly? trunkPCM="100000"; more $FILE |while read line do PCM=`echo $line | awk '{ print $2 }'` ... (4 Replies)
Discussion started by: tan102938
4 Replies
Login or Register to Ask a Question