在MySql -e选项中,当输出与管道一起使用时,会打印不同的格式。
没有管道
[root@localhost commands]# $MYSQL_CONNECT_STR -e 'select 0/8'
+--------+
| 0/8 |
+--------+
| 0.0000 |
+--------+
使用Pipe - 无格式化。
[root@localhost commands]# $MYSQL_CONNECT_STR -e 'select 0/8'| more
0/8
0.0000
mysql命令如何检测输出是否会通过管道传递给另一个命令?
答案 0 :(得分:1)
有一个系统调用来确定文件句柄的特征:
int fstat (int fd, struct stat *buf);
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
通过检查st_mode位,程序可以确定它所连接的设备类型。有关详细信息,请参阅man 2 fstat
。特别是,有一些宏是系统独立的,以区分常规文件,管道,套接字等。
还有另一个系统调用,用于确定文件连接是否与终端连接:
int isatty(int fd);
说明 isatty()函数测试fd是否是引用终端的打开文件描述符。
返回值 如果fd是引用终端的打开文件描述符,则isatty()返回1;否则返回0,并设置errno以指示错误。
答案 1 :(得分:0)