greater than symbol at beginning of line

2019-03-06 09:49发布

I've just seen the following in a script and I'm not sure what it means:

.............
started=$STATUSDIR/.$EVENT_ID-started
   errs=$STATUSDIR/.$EVENT_ID-errors

# started is used to capture the time we started, so
# that it can be used as the latest-result marker for
# the next run...
>"$started"
>"$errs"

# store STDERR on FD 3, then point STDERR to $errs
exec 3>&2 2>"$errs"
..............

Specifically, the ">" at the beginning of the lines. The script actually fails with "No such file or directory". The vars are all supplied via subsidiary scripts and there doesn't seem to be any logic to create the directories it's complaining about.

It's not the easiest thing to Google for, so I thought I'd ask it here so that future bash hackers might find the answers you lovely people are able to provide.

标签: bash shell
1条回答
老娘就宠你
2楼-- · 2019-03-06 10:05

This is a redirection. It's the same syntax used for echo hello >file (or its less-conventional but equally-correct equivalent >file echo hello), just without the echo hello. :)

When attached to an empty command, the effect of a redirection is identical to what it would be with a command that ran and immediately exited with no output: It creates (if nonexistent) or truncates (if existent) the output file, closes that file, and lets the script move on to the next command.

查看更多
登录 后发表回答