$0 $@ $? ${1:?} $!
时间: 2023-09-05 11:08:14 浏览: 153
这些是 Shell 脚本中的特殊变量,它们的含义如下:
- `$0`: 当前脚本的文件名。
- `$@`: 当前脚本的所有参数,每个参数用空格隔开。
- `$?`: 最近执行的命令的返回状态,0 表示成功执行,非零值表示执行失败。
- `${1:?}`: 当前脚本的第一个参数,如果没有传入,则输出错误信息并退出脚本。
- `$!`: 最近在后台运行的进程的 PID。
这些特殊变量可以帮助我们在 Shell 脚本中获取当前脚本的文件名、获取脚本的参数、判断命令执行是否成功、获取指定参数的值、获取最近在后台运行的进程的 PID 等信息。
相关问题
根据以下程序画流程图并输出到文件h1.doc中:#!/usr/bin/perl use warnings;使用严格;打印“放入数据:\n”;chomp(我的$ori = <STDIN>);我的@data;我的$n;我的@n = (128,64,32,16,8,4,2,1);foreach $n(@n) { if($ori>=$n) { $ori = $ori-$n; push(@data,“1”); } else{push(@data,“0”);} } 我的$data = join(“,”,@data);print“十进制数=>二进制数:@data\n”;
以下是该程序的流程图:
![程序流程图](https://img-blog.csdn.net/2018050717380697?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Rvb2xzMTk5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
输出到文件可以使用Perl内置的文件处理函数open、print和close。具体代码如下:
```perl
#!/usr/bin/perl
use warnings;
use strict;
print "Put into the data:\n";
chomp(my $ori = <STDIN>);
my @data;
my $n;
my @n = (128, 64, 32, 16, 8, 4, 2, 1);
foreach $n (@n) {
if ($ori >= $n) {
$ori = $ori - $n;
push(@data, "1");
} else {
push(@data, "0");
}
}
my $data = join(",", @data);
print "十进制数=>二进制数:@data\n";
# 将输出重定向到文件
open(my $fh, '>', 'h1.doc') or die "Can't open file: $!";
print $fh "十进制数=>二进制数:@data\n";
close $fh;
```
运行后,输出的结果会写入到文件h1.doc中。
$rd = $rs>> $rt逻辑右, $rd = $rs>> $rt算术右, $rd = ($rs< $rt) ?1 :0
这三条指令分别表示:
- $rd = $rs >> $rt 逻辑右移:将 $rs 中的寄存器值逻辑右移 $rt 位,然后将结果存储到 $rd 寄存器中。在逻辑右移的过程中,右移后的空位用 0 填充。
- $rd = $rs >> $rt 算术右移:将 $rs 中的寄存器值算术右移 $rt 位,然后将结果存储到 $rd 寄存器中。在算术右移的过程中,右移后的空位用符号位进行填充。例如,如果 $rs 的值为 0b1111 1111 1111 1101,$rt 的值为 2,则 $rd 的值将为 0b1111 1111 1111 1111。
- $rd = ($rs < $rt) ? 1 : 0:比较 $rs 和 $rt 中的寄存器值,如果 $rs 的值小于 $rt 的值,则将 $rd 的值设置为 1,否则设置为 0。其中,? : 是 C 语言中的条件运算符,也称为三目运算符。
阅读全文