How to use a variable to indicate a file descriptor in bash?
10,426
Solution 1
You have to use eval
and put the entire expression in quotes.
eval "exec $id<>$file"
And do that every time you want to use $id
.
Solution 2
The accepted answer is correct, but as of bash 4.1, you can use automatic file descriptor allocation, and in that case you don't need eval
:
file=a
exec {id}<>"$file"
Then you can use it like this:
echo test >&${id}
or:
fsck -v -f -C ${id} /dev/something
Author by
WH's HeV
Updated on June 12, 2022Comments
-
WH's HeV almost 2 years
I want to use a bash variable to indicate a file descriptor, like this:
id=6 file=a exec $id<>$file
But the usage is wrong:
-bash: exec: 6: not found
So, how to use a variable to indicate a file descriptor in exec command?