我怎么用echo来做呢?
perl -E 'say "=" x 100'
我怎么用echo来做呢?
perl -E 'say "=" x 100'
当前回答
我猜这个问题的最初目的是仅用shell的内置命令来完成这个任务。因此,for循环和printfs是合法的,而下面的rep、perl和jot则不是。但是,下面的命令
$((COLUMNS/2))
例如,打印的窗户完全线 \/\/\/\/\/\/\/\/\/\/\/\/
其他回答
repeat() {
# $1=number of patterns to repeat
# $2=pattern
printf -v "TEMP" '%*s' "$1"
echo ${TEMP// /$2}
}
for i in {1..100}
do
echo -n '='
done
echo
我猜这个问题的最初目的是仅用shell的内置命令来完成这个任务。因此,for循环和printfs是合法的,而下面的rep、perl和jot则不是。但是,下面的命令
$((COLUMNS/2))
例如,打印的窗户完全线 \/\/\/\/\/\/\/\/\/\/\/\/
printf -- '=%.0s' {1..100}
双破折号——表示“命令行标志的结束”,所以不要试图解析命令行选项后面的内容。
如果你想打印破折号字符,而不是=字符,多次,不包括双破折号-这是你会得到的:
$ printf '-%.0s' {1..100}
bash: printf: -%: invalid option
printf: usage: printf [-v var] format [arguments]
为什么不创建这样的一行函数呢:
function repeat() { num="${2:-100}"; printf -- "$1%.0s" $(seq 1 $num); }
然后,你可以这样调用它:
$ repeat -
----------------------------------------------------------------------------------------------------
或者像这样:
$ repeat =
====================================================================================================
或者像这样:
$ repeat '*' 8
********
我怎么用echo来做呢?
如果echo后面跟着sed,你可以用echo来实现:
echo | sed -r ':a s/^(.*)$/=\1/; /^={100}$/q; ba'
实际上,这个回声在这里是不必要的。