Difference between revisions of "Script Course"
Jump to navigation
Jump to search
Line 51: | Line 51: | ||
'''Redirect both at the same time''' | '''Redirect both at the same time''' | ||
ls /etc >goodoutput 2>badoutput | ls /etc >goodoutput 2>badoutput | ||
'''tee command, which takes information from Standard Input and sends that information to a file, as well as to Standard Output.''' | |||
== Chaining multiple commands== | == Chaining multiple commands== | ||
cp test.txt /temp; cp test.text /tmp | cp test.txt /temp; cp test.text /tmp |
Revision as of 17:15, 7 April 2019
File Operators Tests
- -d File True if file is a directory
- -e File True if file exists
- -f File True if file exists and is a regular file
- -r File True if file is readable by you
- -s File True if file exist and is not empty
- -w File True if the file is writable by you
- -x File True if the file is executable by you
- -z String True if string is empty
- -n String true if string is not empty
Syntax
[condition to test for]
Example
[ -e /etc/passwd ] -e True if file exists
Exit Status return codes
- Every command returns an exit status
- range from 0 - 255
- 0 = success
- Other than 0 = error condition
- use for error checking
$? Contains the return code of the previously executed command
ls /not/here echo "$?"
-
HOST = "google.com" ping -c 1 $HOST if [ "$?" -eq "0" ] then echo "$HOST reachable." else echo "$HOST unreachable" fi
' And and || or
- && = And : if first fails the other won't be executed
mkdir /tmp/bak && cp test.txt /tmp/bak/
- || OR - if one fails the other will be processed
cp test.txt /tmp/bak || cp test.txt /tmp
Redirection
redirect to non error using status code 1 to filename goodoutput
ls /etc 1>goodoutput ls /etc > 2>badoutput
Redirect both at the same time
ls /etc >goodoutput 2>badoutput
tee command, which takes information from Standard Input and sends that information to a file, as well as to Standard Output.
Chaining multiple commands
cp test.txt /temp; cp test.text /tmp
Bash Functions
#!/bin/bash function hello(){ for NAME in $@ do echo "Hello $NAME" done }
Call Script
hello Jason Dan Ryan
Those three names will be processed individually