al.zatv
al.zatv

Reputation: 193

linux device which don't allow to write on it

I have a script which write some warnings to separate file (it's name is passed as an argument). I want to make this script fail if there is a warning.

So, I need to pass some file name which must raise an error if someone try to write there. I want to use some more or less idiomatic name (to include it to man page of my script).

So, let say my script is

# myScript.sh
echo "Hello" > $1

If I call it with

./myScript.sh /dev/stdin

it is not fail because /dev/stdin is not read-only device (surprisingly!) After

./myScript.sh / 

it is failed, as I want it (because / is a directory, you can't write there). But is is not idiomatic.

Is there some pretty way to do it?

Upvotes: 0

Views: 62

Answers (1)

sjsam
sjsam

Reputation: 21965

if [ -w "$1" ]
then
   echo "$Hello" > "$1" # Mind the double-quotes
fi

is what you're looking for. Below would even be better in case you've only one argument.

if [ -w "$*" ]
then
   echo "$Hello" > "$*" # Mind the double-quotes
fi

$* is used to accommodate nonstandard file names. "$*" combines multiple arguments into a single word. Check [ this ].

Upvotes: 1

Related Questions